The present invention relates to data storage systems. More particularly, the present invention is directed to a method and apparatus for managing the dynamic assignment of resources in a data storage system.
Storage systems including devices such as disk drives are used in many different types of computer or data processing systems to store data. Disk drives generally include one or more disks of a recording medium (e.g., a magnetic recording medium or an optical recording medium) on which information can be written for storage purposes, and from which stored information can be read. Large data storage systems commonly include on the order of one-hundred disk drives, with each disk drive including several disks. One such mass storage system is the SYMMETRIX line of disk arrays available from EMC Corporation of Hopkinton, Mass. The SYMMETRIX line of disk arrays is described in numerous publications from EMC Corporation, including the SYMMETRIX model 55XX product manual, P-N200-810-550, rev. F, February, 1996.
Typically, data in a mass data storage system is accessed from a host computer in units called xe2x80x9clogical volumes,xe2x80x9d with the host computer writing or reading data to the storage system using a logical volume address or xe2x80x9clogical device volume numberxe2x80x9d (hereafter DV#). Each physical storage device (e.g., a disk drive) in a storage system may store a single logical volume. Alternatively, it is possible in many systems to configure each physical storage device to store two or more logical volumes. For example, each disk drive may be configured to have two logical volumes stored on it, in which case the system would be said to have a two-to-one logical-to-physical relationship.
Some mass data storage systems allow for one or more resources of the system to be dynamically assigned during operation of the system, resulting in a change from the way these resources were allocated at the time the system was initially configured. One example of this involves the dynamic assignment, during operation, of one or more of the system""s physical devices (e.g., a disk drive or a portion thereof) to store a particular logical volume. To support such dynamic assignment, one or more physical devices may be configured so that they are not statically assigned to store a particular logical volume addressable by the host. Instead, these storage devices are configured to be reserved for special operations during which they may be dynamically assigned by the storage system to temporarily store a particular logical volume addressable by the host. This dynamic assignment may be of the entire physical device, or some portion thereof.
One example of the dynamic assignment of physical resources involves configuring certain storage devices to be reserved as xe2x80x9chot sparesxe2x80x9d that are available to be dynamically assigned to, for example, replace failing storage devices. When it is determined that the number of errors occurring on a particular storage device is excessive and that a hard failure is probable, the storage system can dynamically assign an available one of its hot spares to address the problem. First, the system dynamically assigns the hot spare device as an additional mirror of the logical volume stored on the failing device, so that accesses to the logical volume can be serviced by the spare. The system then dynamically copies the data from the failing device to the available spare without interrupting operation of the storage system. The failing device is then replaced. Thereafter, the system dynamically copies the data from the hot spare to the newly installed device. Once the data is copied to the replacement device, the storage system dynamically reassigns the hot spare device so that it no longer acts as a mirror for the logical volume that was stored on the failing device and is returned to the pool of available spares for use in addressing potential failures with other devices.
Applicant has discovered that a number of problems can arise in handling the dynamic assignment of resources in a storage system, particularly when failures occur in the components of the system that store the information regarding the dynamic assignments. Several specific examples of the ways in which problems can arise are discussed below. However, before discussing those examples, an explanation is provided of the architecture of an existing SYMMETRIX data storage system, and the manner in which the dynamic assignment of devices is handled in that system. It should be appreciated that the challenges associated with the dynamic assignment of devices are not peculiar to the SYMMETRIX architecture, and apply to all types of storage systems that support the dynamic assignment of resources. Thus, the description of the existing SYMMETRIX system is provided below merely for illustrative purposes.
FIG. 1 is a block diagram of an existing SYMMETRIX data storage system 1 coupled to a host data processor 2. The data storage system includes a number of disk drives (e.g., drives 112, 114, 116, 118, 132, 134, 136, and 138) and a number of controllers. Some of the controllers 102, 104 are referred to as host adapters, and others (110A, 110B, 130A and 130B) are referred to as disk adapters or DA""s. The host adapters and disk adapters operate together, along with a read-write memory 100 that is globally accessible to all of the host and disk adapters, to transfer data between the host data processor 2 and the disk drives. It should be appreciated that the data storage system typically will include many more host adapters, disk adapters and disk drives than are shown in FIG. 1. It should further be appreciated that each host adapter, disk adapter, and disk drive typically has a resident processor (e.g., a microprocessor) and local memory that are used to control its operation. The host adapters 102 and 104 communicate with the host data processor 2 via a bus 3.
Communication between the host adapters 102 and 104, the disk adapters 110A, 110B, 130A and 130B, and the globally accessible memory 100 is accomplished over busses 106 and 108. Each of the disk adapters is coupled to a subset of the disk drives (112, 114, 116, 118, 132, 134, 136, and 138) in the system, and controls communication with the drives to which it is coupled in a manner discussed briefly below. The disk adapters communicate with their respective disk drives via one or more buses 120, 122, 124, 126, 140, 142, 144, and 146, which may be of any type. For example, the buses can be SCSI (Small Computer System Interface) buses.
Globally accessible memory 100 includes three sections. A first section stores a number of tables used by the host and disk adapters to control communication between the host processor 2 and the disk drives (e.g., 112, 114). A second section serves as a data cache that stores read/write data blocks, i.e., the system illustrated in FIG. 1 is a cached storage system. The third section is used as a service area for a service processor 148.
The manner in which the host adapters 102 and 104 and disk adapters 110A, 110B, 130A and 130B operate to enable the host data processor 2 to read data from and write data to the disk drives in the cached system of FIG. 1 will now briefly be described. The caching operations are performed by the host adapters and disk adapters in a manner that is transparent to the host data processor. A read operation typically causes one of the host adapters 102, 104 to scan a directory in the data cache portion of the memory 100 for the requested data, and when the requested data is in the cache, the host adapter transfers the data from the cache to the host processor 2. If the requested data is not in the cache, the disk adapters (e.g., 110A, 110B) determine on which disk drive (e.g., 112, 114) the data is stored, and transfer the data from the disk drive to the cache. One of the host adapters then transfers the requested data from the cache area of memory 100 to the host data processor. For write operations, the data initially is written to the cache by the host adapters, which typically indicate to the host data processor 2 that the write is complete as soon as the data is verified as having been stored, error-free, in the cache. The disk adapter (e.g., 110A) associated with the particular disk drive (e.g., 112) on which the data is to be stored then asynchronously destages the data to the disk drive.
The illustrative storage system shown in FIG. 1 further includes a service processor 148 that is coupled to each of the host adapters 102 and 104 and disk adapters 110A, 110B, 130A and 130B. Service processor 148, which can be implemented as a PC (e.g., a laptop), provides diagnostic and maintenance utilities for the system, as well as a communication channel into the system for service personnel.
To map between the logical volume addresses that the host processor 2 uses to access data stored in the storage system and the physical locations on the disk drives at which the data is actually stored, the storage system includes a number of configuration tables. The existing system illustrated in FIG. 1 employs two types of tables. First, there is a set of static configuration tables that store the configuration information for each disk drive (or portion thereof) when the storage system initially is configured. This configuration information can be loaded into the static tables via the service processor 148. The static information does not change dynamically during operation of the storage system, and generally is stored in non-volatile memory so that it will not be lost if power is interrupted. Second, there is a set of dynamic tables that store configuration information that changes dynamically. Examples of the configuration tables for the existing data storage system of FIG. 1 are discussed below in connection with FIGS. 2-5, with FIGS. 2-3 showing the static tables and FIGS. 4-5 showing the dynamic tables.
In the existing system of FIG. 1, each of the disk adapters stores, in its local memory, two static configuration tables that each includes information concerning the static configuration of the system resources. FIGS. 2-3 are examples of these static configuration tables, and illustrate the static tables for disk adapters 110A and 110B (FIG. 1). The first static configuration table is shown in FIGS. 2A-B. As seen from these figures, the static configuration tables for disk adapters 110A and 10B each includes a number of entries indexed by a xe2x80x9ctarget numberxe2x80x9d of the disk adapter. Each portion of a disk drive that stores a logical volume is assigned a unique target number on each disk adapter to which the disk drive is coupled. Thus, each target number for each disk adapter is an address unique to that disk adapter that identifies a specific group of memory locations (e.g., that can be used to store a logical volume) within the storage space of a disk drive associated with the disk adapter. As seen from FIGS. 2A-B, when a disk drive is coupled to more than one disk adapter (e.g., drive 112 is coupled to disk adapters 110A and 110B), the drive can be assigned different target numbers on the different disk adapters (e.g., drive 112 includes target numbers xe2x80x9c0xe2x80x9d and xe2x80x9c1xe2x80x9d on DA 110A and target numbers xe2x80x9c4xe2x80x9d and xe2x80x9c5xe2x80x9d on DA 110B).
In FIGS. 2A-B, the parenthetical entry next to each of the xe2x80x9cDA-Specific Target Numberxe2x80x9d entries identifies the physical device in FIG. 1 that stores the target (i.e., the specific group of memory locations that can be used to store a logical volume) identified by the target number. These parenthetical entries are not included in the actual tables, but are shown in FIGS. 2A-B for the purpose of illustration. As shown, the configuration tables of FIG. 2 reflect that the system of FIG. 1 is configured to have a two-to-one logical-to-physical relationship, with each disk drive storing two logical volumes. As discussed above, the logical-to-physical relationship is configurable.
As shown in FIGS. 2A-B, the table entries of disk adapter 110A indexed by target numbers xe2x80x9c0-3xe2x80x9d include entries identical to those of disk adapter 110B indexed by target numbers xe2x80x9c4-7xe2x80x9d. Similarly, the table entries for target numbers xe2x80x9c0-3xe2x80x9d of disk adapter 10B include entries identical to those of target numbers xe2x80x9c4-7xe2x80x9d of disk adapter 110A. The reason for this duplication is that, as shown in FIG. 1, each of disk drives 112, 114, 116 and 118 is coupled to both disk adapters 110A and 110B. This is done for fault tolerance reasons. In this respect, disk adapters 110A and 110B generally do not service requests for access to the same logical volumes simultaneously. Rather, disk adapter 110A only accesses drives 112 and 114 during normal operation, and disk adapter 110B only accesses drives 116 and 118. This is represented in the tables of FIGS. 2A-B in that the table entries for targets that are serviced by each of disk adapters 110A and 110B during normal operation are highlighted (i.e., not xe2x80x9cshadowedxe2x80x9d), whereas the shadowed entries in each of the two tables are used only as standby targets in the event of a failure of the disk adapter responsible for servicing these targets during normal operation.
In the example illustrated in the tables of FIGS. 2A-B, if the storage system were to detect a hardware failure caused by the failure of disk adapter 110A, then disk adapter 110B would service both its highlighted targets (i.e., targets xe2x80x9c0-3xe2x80x9d) and its shadowed targets (i.e., targets xe2x80x9c4-7xe2x80x9d), while disk adapter 110A would be taken off-line. In this manner, targets xe2x80x9c0-3xe2x80x9d of disk adapter 110A, which normally are serviced by disk adapter 110A, could continue to be accessed after disk adapter 110A failed. When the failure was corrected, disk adapters 110A and 110B would return to servicing requests to their highlighted targets in the normal manner.
As should be appreciated from the foregoing, the system of FIG. 1 configures the disk adapters to operate in pairs so that one disk adapter can take over the duties of the other should a failure occur with one of the pair of disk adapters. In the system of FIG. 1, disk adapters 110A and 110B constitute a first DA pair 110 and disk adapters 130A and 130B constitute a second DA pair 130. The use of DA pairs provides fault tolerance in the event that a disk adapter fails, because each disk adapter has the capability of servicing all requests to the targets of the disk adapter with which it is paired. Together, each pair of disk adapters forms a dual-initiator (borrowed from the SCSI convention wherein xe2x80x9cinitiatorsxe2x80x9d are devices that control operations on a bus) system, because each of the buses (e.g., 120, 122, 124, 126) for accessing the disk drives is coupled to two disk adapters.
As shown in the figures, one field for each entry in the static configuration tables of FIGS. 2A-B is a xe2x80x9cmirror number.xe2x80x9d It should be appreciated that many storage systems employ mirroring techniques for fault tolerance and performance reasons. For example, to protect critical data from equipment malfunction or other events that could result in a loss of data, many data storage systems are configured to store multiple mirrors of the same logical volume on two or more disk adapter targets, most typically on different disk drives. When a logical volume is written, the write is carried out to all of the mirrors of the logical volume. By storing data in two or more mirrors, the data is not lost when a disk drive containing a xe2x80x9cmirroredxe2x80x9d logical volume fails, so long as at least one other disk drive containing a mirror of the logical volume remains operational. The use of mirroring techniques also can increase system performance, because two or more mirrors of the same logical volume can be accessed in parallel.
Mirroring operations generally are transparent to the host data processor 2 (FIG. 1), so that the host is unaware that more than one mirror of a particular logical volume exists. From the perspective of the host processor, the logical volume is accessed using a single logical volume address. The logical volumes seen by the host data processor 2 correspond with the logical device volume numbers (DV#) stored in the table entries. However, as seen from FIGS. 2A-B, multiple targets can correspond to the same logical volume (e.g., target xe2x80x9c0xe2x80x9d on disk adapter 110A and target xe2x80x9c0xe2x80x9d on disk adapter 110B both correspond to logical volume DV0). The disk adapters store the mirror number in the static configuration tables of FIGS. 2A-B to enable the storage system to distinguish between the mirrors. For example, when mirroring is used to increase system performance by enabling simultaneous access to multiple mirrors of a logical volume, the disk adapters can use the mirror numbers in the static configuration tables to perform load balancing among the multiple mirrors to maximize system performance.
When a target fails while storing a mirror of a logical volume, the storage system, without interruption, can automatically use the target(s) storing the other mirrors of that logical volume to continue to service requests to the logical volume. When the defective disk drive is replaced, the system then may reestablish the replacement disk drive as a valid target and automatically copy the data for the logical volume to the new disk drive. Generally, the new disk drive will be configured identically to the one it replaced so that no reconfiguration of the system is required.
As discussed above, some mass storage systems employ a function called dynamic sparing, wherein a hot spare device can be dynamically assigned as an additional mirror for a logical volume. In the illustrative system described in connection with FIGS. 2A-B, certain targets (e.g., portions of disk drives) are statically configured to serve as hot spares. This designation will not change unless the system is reconfigured. Thus, to enable the disk adapters to identify which of its targets are configured for use as hot spares, the static configuration tables shown in FIGS. 2A-B include a hot spare flag field. Only those targets that are reserved as hot spares have a xe2x80x9cYesxe2x80x9d in this flag field. Because the logical volume number (DV#) and mirror number of the hot spare targets will be assigned dynamically, as explained below, and because the tables shown in FIGS. 2A-B represent only static configurations, the entries in these fields are irrelevant, as indicated by the notation xe2x80x9cdon""t carexe2x80x9d (xe2x80x9cD/Cxe2x80x9d) in the tables.
As discussed above, there are other types of dynamic resource assignments that the storage system may employ in addition to dynamically assigning some targets as hot spares. Another example involves a feature provided in the SYMMETRIX line of disk arrays known as xe2x80x9cdual copyxe2x80x9d or xe2x80x9cbusiness continuance volumesxe2x80x9d (xe2x80x9cDC/BCVsxe2x80x9d). In accordance with this feature of SYMMETRIX, the storage system is configured to include one or more DC/BCV logical volumes. A DC/BCV volume can be used to establish a logical xe2x80x9cconnectionxe2x80x9d with another logical volume. The DC/BCV volume is used to make at least one additional copy or mirror of the logical volume to which it is logically connected. After the copy is made, the storage system may de-establish the connection to create a snapshot of the contents of the copied logical volume at a particular point in time. The snapshot copy can then be used to perform various operations (e.g., making a backup of the data or generating a report based on its contents) without disrupting or holding up access to the logical volume that was copied. When the desired operations have been completed, the logical connection between the DC/BCV logical volume and the copied logical volume may be reestablished, so that the DC/BCV volume can be updated with all changes that occurred to the copied volume while the logical connection had been de-established. In this manner, the DC/BCV volume can be used to provide a copy of the logical volume at a later point in time. Alternatively, once the need for the point-in-time copy of the logical volume ceases, the DC/BCV volume can be dynamically assigned to another logical volume, or can be kept idle and available for use to make a point-in-time copy of another logical volume.
In the existing SYMMETRIX system described above in connection with FIGS. 1 and 2A-B, information regarding the assignment of particular logical volumes as being dedicated DC/BCV volumes is included in a separate static configuration table stored in the local memory in each of the disk adapters. This table is identical for each disk adapter. A simplified example of this second static table that includes only the logical volumes (DV0-DV2) statically configured for the targets of disk adapters 110A and 110B (FIG. 1) is shown in FIG. 3. This table is indexed by logical volume number and includes two fields for each logical volume listed. One of these fields is a xe2x80x9cDC/BCV Assignment Flag,xe2x80x9d and indicates whether the logical volume is statically configured to be a DC/BCV logical volume. In the example shown, only logical volume DV2 is assigned to be a DC/BCV logical volume. The other field in the table of FIG. 3 is a xe2x80x9cMirror Maskxe2x80x9d that identifies the number of mirrors statically assigned to mirror each of the logical volumes. In the example shown, each of the logical volumes in the table (DV0-DV2) is configured to have two mirrors, as indicated by the designation of a xe2x80x9c2-wayxe2x80x9d mirror in the mirror mask field.
The tables discussed above in connection with FIGS. 2A-B and 3 address only static assignments. To support dynamic resource assignments, such as the hot spare targets and DC/BCV volumes discussed above, the existing system described above further employs additional tables that reflect the dynamic configuration of the system. FIGS. 4A-B and 5 illustrate examples of these dynamic configuration tables. A table of the type shown in FIGS. 4A-B is stored in the local memory of each disk adapter. A table of the type shown in FIG. 5 is stored in a memory location (e.g., globally accessible memory 100 of FIG. 1) that is accessible to both disk adapters in each DA pair (e.g., the table in FIG. 5 is accessible to each of the disk adapters 110A and 110B of DA pair 110). For the sake of simplicity, the locally stored dynamic configuration tables of only disk adapters 110A and 110B are shown, respectively, in FIGS. 4A and 4B, and the globally accessible dynamic table of only DA pair 110 is shown in FIG. 5. It should be understood that similar tables are provided for each disk adapter and DA pair in the system.
The tables in FIGS. 4A-B, like the static tables of FIGS. 2A-B, are indexed by target number. However, unlike those static tables, the dynamic tables of FIGS. 4A-B include entries only for those targets that the disk adapter accesses during normal operation, i.e., the targets that correspond to the DA""s highlighted entries in the static tables of FIGS. 2A-B. Each of the entries in the tables of FIGS. 4A-B can be changed dynamically in response to the dynamic assignment of resources in the system. Using the two examples discussed above, these dynamic assignments include the assignment of hot spares to replace failing targets, and the dynamic establishment of DC/BCV connections. The manner in which each of these dynamic assignments is handled is discussed below.
As reflected in the tables of FIGS. 2A-B, target xe2x80x9c3xe2x80x9d of disk adapter 110A and target xe2x80x9c3xe2x80x9d of disk adapter 110B each is reserved as a hot spare. As mentioned above, the logical volume fields in the static configuration tables for these xe2x80x9chot sparexe2x80x9d targets are meaningless, as these targets are assigned, only dynamically to store a particular logical volume. Thus, the dynamic configuration tables of FIGS. 4A-B include a field for each target that indicates the logical volume to which the target is assigned. For those targets that are not hot spares (e.g., target xe2x80x9c0xe2x80x9dof DA 110A), the value stored in this field will be the logical volume to which the target was statically assigned in the configuration table of FIGS. 2A-B. However, for the hot spare targets, this field will be dynamically updated to control the dynamic assignment of the hot spare to a specified logical volume. For the hot spare targets, each of the disk adapters looks to the dynamic configuration table of FIGS. 4A-B in its local memory to determine whether its hot spares have been assigned to mirror a logical volume, and if so, which logical volume each has been assigned to mirror.
In addition to the logical volume field, the dynamic tables of FIGS. 4A-B also include two additional fields that are used to support the dynamic assignment of hot spare targets. First, a xe2x80x9cmirror maskxe2x80x9d indicates the total number of mirrors of the logical volume. When a hot spare has been dynamically assigned, this number will equal the number of mirrors that were statically assigned to the logical volume, plus one to reflect the addition of another mirror in the form of the dynamically assigned hot spare. Second, a xe2x80x9cmirror numberxe2x80x9d indicates the mirror number of the target, which is analogous to the mirror number in the static table of FIGS. 2A-B. When a hot spare is dynamically assigned, the mirror number for the hot spare target will equal the highest mirror number statically assigned to the logical volume, plus one.
For example, referring to the examples of FIGS. 2A-B and 4A-B, if hot spare target xe2x80x9c3xe2x80x9d of disk adapter 110A were dynamically assigned to logical volume DV1, then in the table entry for target xe2x80x9c3xe2x80x9d in the locally stored dynamic table for disk adapter 110A: (1) the DV# entry would reflect that target xe2x80x9c3xe2x80x9d was dynamically assigned to mirror logical volume DV1; (2) the mirror number entry would reflect that target xe2x80x9c3xe2x80x9d was mirror M3 of logical volume DV1 (since mirrors M1 and M2 already exist); and (3) the mirror mask entry for target xe2x80x9c3xe2x80x9d would reflect that a total of three mirrors now exist for logical volume DV1.
In addition to the entry for each dynamically assigned hot spare target, one field of the table entries for the other targets in the tables of FIGS. 4A-B can be dynamically updated to support the use of hot spares. Specifically, it should be appreciated that when a hot spare is dynamically assigned to a logical volume, the number of mirrors assigned to that volume is increased over the number that was statically configured. Thus, the mirror mask field in the dynamic tables of FIGS. 4A-B for the targets that are not hot spares can be dynamically updated to reflect an increase in the number of mirrors of the logical volume stored by the target. Referring to the example discussed above wherein a hot spare is added for logical volume DV1, the mirror mask entries for target xe2x80x9c1xe2x80x9d on DA 110A and target xe2x80x9c1xe2x80x9d on DA 110B are updated to reflect that a total of three mirrors now exist for logical volume DV1.
As mentioned above, the existing SYMMETRIX system also employs a dynamic configuration table (shown in FIG. 5) that is globally accessible to each disk adapter in the system. As shown in FIG. 5, the globally accessible dynamic configuration table is a collection of the identical information included in the locally stored dynamic configuration tables of FIGS. 4A-B. The primary purpose of this globally accessible dynamic configuration table is to support the fault tolerant capabilities provided by using dual-initiator DA pairs. As discussed above, when one disk adapter of a DA pair fails, the other disk adapter in the pair will take over control of its shadow targets that were previously controlled by the failed disk adapter. To do so, the portion of the globally accessible dynamic assignment table reflecting dynamic assignments (made by the failed disk adapter) for those shadowed targets is copied to the disk adapter taking over the failed disk adapter""s targets. Updating of the globally accessible dynamic configuration table is controlled by the disk adapters. For example, after a dynamic assignment of a hot spare is altered, the disk adapter whose local dynamic configuration table was changed in assigning or removing the hot spare updates the globally accessible table of FIG. 5 with the appropriate changes to the entries for the hot spare target and any other targets (of this or another disk adapter) for the impacted logical volume (e.g., the mirror mask entries are updated for targets of other disk adapters that store the same logical volume). For example, if target xe2x80x9c3xe2x80x9d of disk adapter 110A were invoked as a hot spare for logical volume DV1, then when disk adapter 110A updated the globally accessible dynamic configuration table, it would update not only the entries that correspond to the targets referenced in its local table, but also would update the entry in the global table for target xe2x80x9c1xe2x80x9d of disk adapter 110B, so that the mirror mask of this target reflects that logical volume DV1 now has three mirrors.
Each of the disk adapters periodically polls the contents of the globally accessible dynamic configuration table to determine whether any changes have been made to the mirror mask entries for any of its targets. If, pursuant to this polling, a disk adapter determines that the mirror mask entry for one of its targets has been changed, the disk adapter will update its local dynamic configuration table to reflect this change. Referring to the above-discussed example, after disk adapter 110A updates the globally accessible dynamic configuration table in response to target xe2x80x9c3xe2x80x9d of disk adapter 110A being invoked as mirror M3 of logical volume DV1, a periodic polling routine performed by disk adapter 110B will detect that the mirror mask entry for target xe2x80x9c1xe2x80x9d of disk adapter 110B has been changed in the globally accessible table. Thus, disk adapter 110B will detect this change in the globally accessible table and change its local table (FIG. 4B) accordingly.
The dynamic tables of FIGS. 4A-B and 5 also include an additional field (xe2x80x9cDC/BCV Flagsxe2x80x9d) that is used to support the dynamic assignment of DC/BCV volumes. The specific manner in which these flags operate is specific to the manner in which DC/BCV operates, and is not relevant to the present application. However, it should be appreciated that each entry in the dynamic configuration tables of FIGS. 4A-B and 5 that corresponds to a target that stores a DC/BCV volume (e.g., target xe2x80x9c2xe2x80x9d of DA 110A stores a logical volume DV2 that is configured as a DC/BCV volume in FIG. 3) can change dynamically depending upon whether a DC/BCV is established. A DC/BCV connection is established between logical volumes by updating the entries in the local dynamic configuration tables of the disk adapters that have targets that are impacted by the establishment of the DC/BCV connection. In a manner similar to that described above with hot spare assignments, if the DC/BCV Flags or any of the other entries in the local table of a disk adapter are changed during the establishment/de-establishment of a DC/BCV connection, then the disk adapter updates the globally accessible dynamic configuration table to reflect the necessary changes. Subsequently, the other disk adapters in the system, pursuant to periodic polling routines, will detect any changes made to the globally accessible dynamic configuration table that affect their targets and will update their local tables accordingly.
Although the above-described existing SYMMETRIX system works well, Applicant has discovered some unusual situations, discussed below, wherein the dynamic assignment of resources can be handled in a better manner. What is needed, therefore, is an improved method and apparatus for managing the dynamic assignment of resources in a data storage system.
In one embodiment of the invention, a storage system is provided, including: a plurality of storage devices; a plurality of controllers that each is coupled to at least one of the plurality of storage devices and controls access to the one of the plurality of storage devices; a memory that is globally accessible to each of the plurality of controllers; first means for creating a global table, in the memory, that stores information that specifies dynamic assignments of resources in the storage system; and second means for creating a local table in at least one of the plurality of controllers that includes all of the information stored in the global table.
In another embodiment of the invention, a storage system is provided, including: a plurality of storage devices; a plurality of controllers that each is coupled to at least one of the plurality of storage devices and controls access to the one of the plurality of storage devices; and a memory that is globally accessible to each of the plurality of controllers, the memory including a global table that stores information that specifies dynamic assignments of resources in the storage system. At least one of the plurality of controllers includes a local table that includes all of the information stored in the global table.
In another embodiment of the invention, a method is provided for managing dynamic assignments of resources in a storage system including a plurality of storage devices, a plurality of controllers that each is coupled to at least one of the plurality of storage devices, and a memory that is globally accessible to each of the plurality of controllers. The plurality of controllers control the dynamic assignments of resources based upon information stored within the plurality of controllers. The method comprises steps of: (A) creating a global table, in the memory, that stores information concerning all the dynamic assignments of resources in the storage system; (B) creating a local table in each of the plurality of controllers that includes all of the information stored in the global table; and (C) controlling the dynamic assignments of resources based upon the information in the local tables.
In yet another embodiment of the invention a storage system is provided, including: a plurality of storage devices; a plurality of controllers that each is coupled to at least one of the plurality of storage devices and controls access to the one of the plurality of storage devices; and a memory that is globally accessible to each of the plurality of controllers, the memory including a global table that stores information that specifies dynamic assignments of resources in the storage system. At least one of the plurality of controllers includes a local table that includes all of the information stored in the global table.
In another embodiment of the invention, a method is provided for managing dynamic assignments of resources in a storage system. The storage system includes a plurality of storage devices, a plurality of controllers that each is coupled to at least one of the plurality of storage devices, and a memory that is globally accessible to each of the plurality of controllers. The plurality of controllers control the dynamic assignments of resources based upon information stored within the plurality of controllers. The method includes the steps of: (A) creating a global table, in the memory, that stores information concerning all the dynamic assignments of resources in the storage system; (B) creating a local table in each of the plurality of controllers that includes all of the information stored in the global table; and (C) controlling the dynamic, assignments of resources based upon the information in the local tables.
In another embodiment of the invention, a storage system is provided to store information written by a data processing system that accesses units of information in the storage system using a logical volume address. The storage system includes: a plurality of storage devices; a plurality of controllers that each is coupled to at least one of the plurality of storage devices and controls access to the one of the plurality of storage devices; and a memory that stores a dynamic configuration table that includes information specifying dynamic assignments of resources in the storage system, the dynamic configuration table being indexed by the logical volume address.
In another embodiment of the invention, a storage system is provided to store information written by a data processing system that accesses units of information in the storage system using a logical volume address. The storage system includes: a plurality of storage devices; a plurality of controllers that each is coupled to at least one of the plurality of storage devices and controls access to the one of the plurality of storage devices; a memory; and means for creating, in the memory, a dynamic configuration table that includes information specifying dynamic assignments of resources in the storage system, the dynamic configuration table being indexed by the logical volume address.
In another embodiment of the invention, a storage system is provided that includes: a plurality of storage devices; a plurality of controllers that each is coupled to at least one of the plurality of storage devices and controls access to the one of the plurality of storage devices, each of the plurality of controllers including a local memory to store a local table that includes information that specifies dynamic assignments of resources in the storage system; and a memory to store a global table that stores information that specifies the dynamic assignments of resources in the storage system, the memory being accessible by each of the plurality of controllers. Each one of the plurality of controllers includes updating means, responsive to the one of the plurality of controllers being powered up, for automatically updating the local table in the one of the plurality of controllers.
In another embodiment of the invention, a method of managing a storage system is provided. The storage system includes a plurality of storage devices, a plurality of controllers that each is coupled to at least one of the plurality of storage devices and controls access to the one of the plurality of storage devices, each of the plurality of controllers including a local table that includes information that specifies dynamic assignments of resources in the storage system, and a global table that stores information that specifies the dynamic assignments of resources in the storage system and is accessible by each of the plurality of controllers. The method comprises the step of: (A) when one of the plurality of controllers is powered up, automatically updating the local table in the one of the plurality of controllers.
In another embodiment of the invention, a method of managing dynamic assignments of resources in a storage system is provided. The storage system includes a plurality of storage devices and a plurality of controllers, each of the plurality of controllers being coupled to at least one of the plurality of storage devices, at least one of the plurality of controllers being arranged to control the dynamic assignments of resources based upon information stored within a first table in the storage system. The storage system further includes a second table including information specifying the dynamic assignment of resources. The method includes the step of: (A) verifying that the information stored within the first table is consistent with information stored within the second table.
In another embodiment of the invention, a storage system includes: a plurality of storage devices; at least first and second dynamic assignment tables that each includes information specifying dynamic assignments of resources in the storage system; a plurality of controllers, each coupled to at least one of the plurality of storage devices, wherein at least one of the plurality of controllers is arranged to control the dynamic assignments of resources in the storage system based upon the information stored within the first dynamic assignment table; and verification means for verifying that the information stored within the first dynamic assignment table is consistent with the information stored within the second dynamic assignment table.
In another embodiment of the invention, a method for managing dynamic assignments of resources in a storage system is provided. The storage system includes a plurality of storage devices and a plurality of controllers that control the dynamic assignments of resources, each of the plurality of controllers being coupled to at least one of the plurality of storage devices. The method comprises the steps of: (A) creating first and second copies of a table that specifies the dynamic assignments of resources of the storage system; and (B) storing the first and second copies of the table in two different locations in the storage system.
In another embodiment of the invention, a method for managing dynamic assignments of resources in a storage system is provided. The storage system includes a plurality of storage devices and a plurality of controllers that control the dynamic assignments of resources, each of the plurality of controllers being coupled to at least one of the plurality of storage devices, each of the plurality of controllers having a local memory that stores information specifying the dynamic assignments of resources of the storage system. The method comprises the steps of: (A) identifying which one of the plurality of controllers has stored in its local memory a most current version of the information specifying the dynamic assignments of resources; and (B) using the contents of the local memory of the one of the plurality of controllers identified in step (A) to update the contents of the local memory in the other controllers.